package cn.tedu.mall.common.restful;

import com.github.pagehelper.PageInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

//通用的类，支持保存各种分页信息查询结果信息的类
@Data
public class JsonPage<T> implements Serializable {
    //声明常用属性--分页信息(根据实际情况来)
    @ApiModelProperty(value = "总页数",name = "totalPages")
    private Integer totalPages; //总页数
    @ApiModelProperty(value = "总条数",name = "totalCounts")
    private Long totalCounts; //总条数
    @ApiModelProperty(value = "当前页码",name = "pageNum")
    private Integer pageNum; //当前页码
    @ApiModelProperty(value = "每页条数",name = "pageSize")
    private Integer pageSize; //每页条数
    //还需要其他属性，可以逐一声明
    //分页数据
    @ApiModelProperty(value = "分页数据",name = "list")
    private List<T> list;

    //我们要使用的是PageHelper提供的PageInfo，需要将PageInfo转成JsonPage
    public static <T> JsonPage<T> restPage(PageInfo<T> pageInfo){
        //开始转换类型，将pageInfo中的属性赋值给JsonPage对象
        JsonPage<T> jsonPage = new JsonPage<>();
        //赋值分页信息
        jsonPage.setTotalPages(pageInfo.getPages());
        jsonPage.setTotalCounts(pageInfo.getTotal());
        jsonPage.setPageNum(pageInfo.getPageNum());
        jsonPage.setPageSize(pageInfo.getPageSize());
        //赋值分页数据
        jsonPage.setList(pageInfo.getList());
        //返回赋值完毕的jsonPage对象
        return jsonPage;
    }
}
